#ifndef __SQLITESINGLETON_H__
#define __SQLITESINGLETON_H__

#include <iostream>
#include <sqlite3.h>
#include <string>
#include "../Utils/Utils.h"
#include "vector"
using namespace std;
class SQLite3Singleton {
    private:
        static SQLite3Singleton* instance;
        sqlite3* db;
        SQLite3Singleton(const string& dbName);
        ~SQLite3Singleton();
        SQLite3Singleton(const SQLite3Singleton&) = delete;
        SQLite3Singleton& operator=(const SQLite3Singleton&) = delete;
        string dbName;
    public:
        static SQLite3Singleton* getInstance(const std::string& dbName);
        ReturnStatus connect();
        ReturnStatus disconnect();
        ReturnStatus executeQuery(const string& query);
        vector<string> fetchResults(const string& query,const TableChoice& tableChoice);
    };
    

    
    
#endif
